﻿using Microsoft.Extensions.DependencyInjection;
using Apex.Commons.ServiceRegistrationCenter;
using Apex.ASPNETCore.Cache;
using Apex.Commons.Helper;

namespace Apex.ASPNETCore
{
    class ModuleInitializer : IModuleInitializer
    {
        public void Initialize(IServiceCollection services)
        {
            // 向依赖注入容器注册内存缓存服务
            services.AddMemoryCache();

            // 向依赖注入容器注册分布式内存缓存服务
            services.AddDistributedMemoryCache();

            // 注册内存缓存帮助器服务
            services.AddScoped<IMemoryCacheHelper, MemoryCacheHelper>();

            // 注册分布式内存缓存帮助器服务
            services.AddScoped<IDistributedCacheHelper, DistributedCacheHelper>();

            // 通用邮件配置
            services.AddSingleton<EmailHelper>(new EmailHelper(
                "xxx",
                25,
                "xxx",
                "xxx",
                "xxx"
            ));

            // 注册Redis原生操作
            services.AddScoped<IRedisHelper, RedisHelper>();

            // 这里注释掉，在WebApplicationBuilderExtensions中配置
            ////使用Redis分布式缓存
            //services.AddStackExchangeRedisCache(options =>
            //{
            //    options.Configuration = "localhost"; //连接哪个redis服务器
            //    options.InstanceName = "rly_"; //避免分布式缓存的key与其他项目的key混乱，建议大家给key添加一个前缀
            //});
        }
    }
}
